import { createRouter, createWebHistory } from 'vue-router'
import routerMap from './router'
import Utils from '@/utils/commonUtils'
// 创建路由
const router = createRouter({
  // 创建历史路由
  history: createWebHistory(import.meta.env.BASE_URL),
  // 创建路由规则
  routes: routerMap,
  scrollBehavior() {
    // 始终滚动到顶部
    return { top: 0 }
  },
})
// 创建路由数组
const routerArr = new Map()
const formatRouter = (routerMap: any) => {
  routerMap.forEach((item: any) => {
    if (!routerArr.has(item.name)) {
      routerArr.set(item.name, item.name)
    }
    if (item.children) {
      formatRouter(item.children)
    }
  })
}
// 路由进入之前执行
let isFirstLoad = true //首次进入路由
router.beforeEach((to: any, from: any, next: Function) => {
  if (isFirstLoad) {
    Utils.LocalStore.set('routerName', '/homePage')
  }
  formatRouter(routerMap)
  if ([...routerArr.keys()].includes(to.name)) {
    next()
    Utils.LocalStore.set('routerName', to.name)
  } else {
    return false
  }
  isFirstLoad = false
})
// 用户无法进入页面时你希望避免执行的操作
// router.beforeResolve((to: any) => {
//   console.log(to, '全局解析守卫');

// })
// 它们对于分析、更改页面标题、声明页面等辅助功能以及许多其他事情都很有用。
router.afterEach((to: any) => {
  document.title = to.meta.title
})
export default router
